
// new 构造函数的过程
function newFun(fun,...args){
  // 创建新对象
  newObj={}
  // 新对象与构造函数的prototype链接（__proto__）
  newObj.__proto__=fun.prototype
// 构造函数的this绑到新对象上
const result=fun.apply(newObj,args)
// 判断返回类型值类型返回空对象（newObj），引用类型返回这个引用类型
return result instanceof Object ? result:newObj
}

function Person(name)
{
  this.name=name
}
Person.prototype.say=function(){
  console.log('类型');
}

const p1= newFun(Person,'张三');
console.log(p1);
p1.say()
